package com.coderjacky.search.server.config;


import org.apache.http.HttpHost;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * @ClassName EsConfig
 * @Description 描述
 * @Author GYW
 * @Date 2024-12-18 17:08
 */
@Configuration
public class EsConfig {

    // 定义一个公共的、最终的RequestOptions对象，用于在整个应用中重复使用
    public static final RequestOptions COMMON_OPTIONS;

    // 静态代码块用于初始化COMMON_OPTIONS对象
    static{
        // 获取默认的RequestOptions并创建其副本，以便于后续的自定义配置
        RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
        // 使用builder构建最终的RequestOptions对象并赋值给COMMON_OPTIONS
        COMMON_OPTIONS = builder.build();
    }

    /**
     * 创建并配置RestHighLevelClient bean
     * 此方法定义了一个Bean，用于创建一个与Elasticsearch交互的RestHighLevelClient实例
     * 该客户端将用于执行各种Elasticsearch操作，如索引、搜索等
     * @return RestHighLevelClient 一个配置好的RestHighLevelClient实例，用于连接Elasticsearch集群
     */
    @Bean
    public RestHighLevelClient restHighLevelClient(){

        // 创建并配置RestHighLevelClient实例
        // 指定Elasticsearch服务器的地址、端口和协议
        RestHighLevelClient estHighLevelClient = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("1.94.39.71", 9200, "http")
                )
        );
        // 返回配置好的RestHighLevelClient实例
        return estHighLevelClient;
    }





}
